草庐IT

C++ STL : Passing an empty container to lower_bound

全部标签

c++ - 如何在STL中使用unordered_set?

我需要一个C++(STL)中的hash_map类。主要操作是将对放入集合中,然后检查它是否存在。我找不到示例代码来判断我声明的内容是否正确。#include#includeusingnamespacestd;usingnamespace__gnu_cxx;typedefpairpis;structeqpis{booloperator()(pisp1,pisp2)const{if(p1==p2)returntrue;returnfalse;}};intmain(){hash_map,eqpis>map;}这个编译。但是,如果我添加以下行:map[pis(10,"你好")]=10;然后它给

c++ - 为 STL 容器传递模板化迭代器

对于我的C++类的练习(尚未涵盖Boost),我在编写模板化方法来接受两个迭代器以对STL容器中的数值求和时遇到问题。考虑以下示例:#include#include#includetemplatedoubleSum(constT&c){return42.0;//implementationstubbed}//needhelpwritingthismethodsignaturetoaccepttwoiteratorstemplatedoubleSum(consttypenameT::const_iterator&begin,consttypenameT::const_iterator&e

c++ - 在哪里可以找到 C++ STL 中 vector 的 size_type 定义?

将vector的size()函数的结果转换为unsignedint似乎是安全的。不过,我怎么能确定呢?我的文档不清楚size_type是如何定义的。 最佳答案 不要假定容器大小的类型(或在其中键入的任何其他内容)。今天?目前最好的解决方案是使用:std::vector::size_type其中T是您的类型。例如:std::vector::size_typei;std::vector::size_typej;std::vector>::size_typek;(使用typedef可以帮助使其更好地阅读)对于迭代器和“内部”STL容器中的

c++ - 具有 O(1) 性能的类似 STL 的容器

我找不到答案,但我很确定我不是第一个寻找这个的人。有没有人知道/使用/看到一个类似STL的容器,它具有双向访问迭代器,对于插入/删除具有O(1)复杂性/查找?谢谢。 最佳答案 插入、删除和查找没有复杂度为O(1)的抽象数据类型,它还提供双向访问迭代器。编辑:对于任意大的域都是如此。给定一个足够小的域,您可以使用数组和双向链表实现一个具有O(1)复杂度的插入、删除和查找集合以及双向访问迭代器:std::list::iteratorarray[MAX_VALUE];std::listlist;初始化:for(inti=0;i插入:if(

c++ - 从 STL 集中删除最大元素

这是我之前提出的问题(ComplexityofSTLmax_element)的后续。我基本上想从集合中弹出最大元素,但我遇到了问题。我的代码大致如下:setobjectSet;Objectpop_max_element(){Objectobj=*objectSet.rbegin();set::iteratori=objectSet.end()--;//thisseemsterribleobjectSet.erase(i);//***glibcdetected***free():invalidpointerreturnobj;}早些时候我试过objectSet.erase(objectS

c++ - STL克隆载体

!嗨我很难尝试将指针vector复制到Point。我有一个vectoroldVector我想将这个vector复制到其他vector中。所以我使用了一个复制构造函数。我是这样做的vectornewVector=vector(oldVector.begin(),oldVector.end());不幸的是,如果我运行这个函数,我会得到一个异常/错误。vectorinteratorsincompatible可能是什么问题??编辑迭代器肯定有更大的问题,看来我根本就不会使用迭代器。我想将两个STLvector相加,所以我用这样写的东西vectora,b;b.insert(b.end(),a.b

c++ - 哪个STL容器有线程安全的插入过程?

哪个STL容器有线程安全的插入过程?我希望多个线程同时插入同一个容器中。欢迎使用STL以外的任何实现(即Boost)! 最佳答案 STL容器不是线程安全的。如果您愿意,您必须通过自己的同步将其强加给您。 关于c++-哪个STL容器有线程安全的插入过程?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7939931/

c++ - 使用 STL 绑定(bind)多个函数参数

在过去,我使用bind1st和bind2nd函数来对STL容器进行直接操作。我现在有一个MyBase类指针的容器,为简单起见如下:classX{public:std::stringgetName()const;};我想使用for_each调用以下静态函数并绑定(bind)第一个和第二个参数:StaticFuncClass::doSomething(ptr->getName(),funcReturningString());我将如何使用for_each并绑定(bind)此函数的两个参数?我正在寻找类似的东西:for_each(ctr.begin(),ctr.end(),bind2Args

c++ - 在 STL 容器内转移所有权?

是否可以将vector内容的所有权从一个vector转移到另一个vector?vectorv1;//fillv1vectorv2=OvertakeContents(v1);//nowv1wouldbeemptyandv2wouldhaveallthecontentsofv1有拼接功能的列表是可以的。对于整个vector,这在恒定时间内也应该是可能的。如果不是,那为什么不呢? 最佳答案 查看std::swapvectorv1;//fillv1vectorv2;swap(v1,v2);ORv2.swap(v1);SwapReferenc

c++ - STL map<char*,char*> 析构函数

我知道映射析构函数调用每个包含元素的析构函数。会发生什么map?我看不到这段代码在/usr/include/c++/4.4中的什么地方编辑:我应该说map喜欢http://www.sgi.com/tech/stl/Map.html 最佳答案 当map被摧毁,它包含的所有元素也被摧毁。如果元素是类类型,则调用每个元素的析构函数。但是,请牢记上面map中包含的内容。正如您所料,它不是字符串——它只是指向字符串的指针。琴弦本身并没有被破坏。只有指针是。delete永远不会在指针上调用。恰当的例子:mapstrings;char*key=n